#ifndef BLOCK_H
#define BLOCK_H

#include "piece.h"

class block				//定义积木类，设定各个积木的属性和操作
{
public:
	block(int=0);
	block(const block &);
	virtual ~block();

	void creatblock(int);	//初始化或重新构建积木
	
	void fix_NULL();	//空的积木，用于一些特殊操作
	void fix_O();		//以下fix型函数都是构造或修正方块类型的函数
	void fix_I0();
	void fix_I1();
	void fix_T0();
	void fix_T1();
	void fix_T2();
	void fix_T3();
	void fix_L0();
	void fix_L1();
	void fix_L2();
	void fix_L3();
	void fix_J0();
	void fix_J1();
	void fix_J2();
	void fix_J3();
	void fix_Z0();
	void fix_Z1();
	void fix_S0();
	void fix_S1();

	piece  getbox();	//获取box
	int  gettype();
	int  getx();
	int  gety();
	
	bool turn(piece &);			//顺时针旋转90度,参数都是当前方块所在的游戏区
	bool move_lift(piece &);		//尝试左移
	bool move_right(piece &);		//尝试右移
	bool move_down(piece &);		//尝试下降
	bool isTouch(piece &);		//判断是否碰底
	block & operator = (block &);		//重载=运算符
private:
	piece box;		//保存方块的几何特征
	int type;		//设定方块的类型
//00-03属于O字形，10-13属于I形，20-23属于T形，30-33属于L形，40-43属于J形，50-53属于Z形，60-63属于S形
	int x;			//记录此时方块左上角所在的游戏区位置(x,y)
	int y;
};

#endif
